package classe.grafica;

import classes.gerais.Contato;                                                  //Importação para uso da classe Contato
import comunicação.em.rede.Conexão;                                             //Importação para a classe Conexão

public class Chat extends javax.swing.JFrame {                                  //Classe Chat - extende uma JFrame
    
    private Conexão Conectado;                                                  //Conectado - Conexão que será criada                                      
    
    public Chat(Contato Iniciar) {                                              //Montador que rece o contato comm o qual se deve inicar uma conexão
        initComponents();                                                       //Inicia os componentes da JFrame
        Conectado = new Conexão (Iniciar, this);                                //Cria uma conexão com os dados inseridos
    }
    
    public void DesligarServidor () {                                           //Método que desliga o servidor quando requisitado
        Conectado.DesligaServidor();                                            //Chama o método da conexão
    }
    
    public void MostraMensagem (String Mensagem){                               //Método que mostra a mensagem recebida
        TACMensagens.append(Conectado.devolveNome()+" diz: "+Mensagem+'\n');    //Coloca a mensagem recebida ao final da text area
    }
    
    public int RetornaPorta (){                                                 //Método que retorna a porta em que se efetua a conexão
        return Conectado.devolvePorta();                                        //Retorna a porta
    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jToggleButton1 = new javax.swing.JToggleButton();
        BCEnviar = new javax.swing.JButton();
        BCSair = new javax.swing.JButton();
        SPCMensagens = new javax.swing.JScrollPane();
        TACMensagens = new javax.swing.JTextArea();
        jScrollPane1 = new javax.swing.JScrollPane();
        TACEnvio = new javax.swing.JTextArea();

        jButton1.setText("jButton1");

        jToggleButton1.setText("jToggleButton1");

        setTitle("CER - Chat");

        BCEnviar.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        BCEnviar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/classe/grafica/send.png"))); // NOI18N
        BCEnviar.setText("Enviar");
        BCEnviar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BCEnviarActionPerformed(evt);
            }
        });

        BCSair.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        BCSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/classe/grafica/back_alt.png"))); // NOI18N
        BCSair.setText("Sair");
        BCSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BCSairActionPerformed(evt);
            }
        });

        TACMensagens.setEditable(false);
        TACMensagens.setColumns(20);
        TACMensagens.setRows(5);
        SPCMensagens.setViewportView(TACMensagens);

        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        TACEnvio.setColumns(20);
        TACEnvio.setRows(5);
        jScrollPane1.setViewportView(TACEnvio);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(SPCMensagens)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 381, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(BCEnviar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(BCSair, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(SPCMensagens, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(BCEnviar, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(BCSair)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void BCEnviarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BCEnviarActionPerformed
        String Envio = TACEnvio.getText();                                      //Recebe a string da text area de envio
        TACMensagens.append("Você diz: " + Envio +'\n');                        //Coloca na text area de mensagens a mensagem que voce esta enviando 
        Conectado.EviarMensagem(Envio);                                         //Envia a mensagem pelo socket
        TACEnvio.setText("");                                                   //Reseta a text area de envio
    }//GEN-LAST:event_BCEnviarActionPerformed

    private void BCSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BCSairActionPerformed
        this.setVisible(false);                                                 //"Sai" da janela de chat
    }//GEN-LAST:event_BCSairActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton BCEnviar;
    private javax.swing.JButton BCSair;
    private javax.swing.JScrollPane SPCMensagens;
    private javax.swing.JTextArea TACEnvio;
    private javax.swing.JTextArea TACMensagens;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JToggleButton jToggleButton1;
    // End of variables declaration//GEN-END:variables
}
